/**
 * @file ProtectedRoute.jsx
 * @description 受保护的路由组件，用于限制未登录用户的访问。
 */
import React from 'react';
import { useSelector } from 'react-redux';
import { Navigate, useLocation } from 'react-router-dom';

const ProtectedRoute = ({ children }) => {
  const { isAuthenticated } = useSelector((state) => state.auth);
  const location = useLocation();

  if (!isAuthenticated) {
    // 如果用户未认证，重定向到登录页
    // state={{ from: location }} 允许我们在登录后将用户重定向回他们最初尝试访问的页面
    return <Navigate to="/login" state={{ from: location }} replace />;
  }

  return children; // 如果已认证，渲染子组件
};

export default ProtectedRoute;